সি# এ MSTest এবং NUnit হলো জনপ্রিয় টেস্ট ফ্রেমওয়ার্ক, যা ইউনিট টেস্টিংয়ের জন্য ব্যবহার করা হয়। MSTest Microsoft এর অফিসিয়াল টেস্ট ফ্রেমওয়ার্ক, আর NUnit একটি তৃতীয় পক্ষের ফ্রেমওয়ার্ক, যা শক্তিশালী ও সম্প্রসারণযোগ্য টেস্টিং ফিচার প্রদান করে।
Visual Studio তে MSTest টেস্ট প্রজেক্ট তৈরি করতে:
ধরা যাক, একটি Calculator
ক্লাস আছে, যা দুটি সংখ্যা যোগ করে এবং Add
মেথডের জন্য একটি টেস্ট লিখবো।
public class Calculator
{
public int Add(int a, int b)
{
return a + b;
}
}
using Microsoft.VisualStudio.TestTools.UnitTesting;
[TestClass]
public class CalculatorTests
{
[TestMethod]
public void Add_ReturnsCorrectResult()
{
// Arrange
var calculator = new Calculator();
int a = 5;
int b = 3;
int expected = 8;
// Act
int result = calculator.Add(a, b);
// Assert
Assert.AreEqual(expected, result);
}
}
Assert.AreEqual
ব্যবহার করে প্রত্যাশিত এবং প্রাপ্ত মান যাচাই করা হয়।MSTest এ [DataTestMethod]
এবং [DataRow]
ব্যবহার করে বিভিন্ন ইনপুট দিয়ে টেস্ট চালানো যায়।
[TestClass]
public class CalculatorTests
{
[DataTestMethod]
[DataRow(5, 3, 8)]
[DataRow(10, 20, 30)]
[DataRow(-5, -3, -8)]
public void Add_ReturnsCorrectResult(int a, int b, int expected)
{
// Arrange
var calculator = new Calculator();
// Act
int result = calculator.Add(a, b);
// Assert
Assert.AreEqual(expected, result);
}
}
এখানে [DataRow]
ব্যবহার করে বিভিন্ন ইনপুট দিয়ে Add
মেথডের ফলাফল যাচাই করা হয়েছে।
Visual Studio তে NUnit টেস্ট প্রজেক্ট তৈরি করতে:
Calculator
ক্লাসের জন্য NUnit ব্যবহার করে টেস্ট লেখার উদাহরণ দেওয়া হলো।
using NUnit.Framework;
[TestFixture]
public class CalculatorTests
{
[Test]
public void Add_ReturnsCorrectResult()
{
// Arrange
var calculator = new Calculator();
int a = 5;
int b = 3;
int expected = 8;
// Act
int result = calculator.Add(a, b);
// Assert
Assert.AreEqual(expected, result);
}
}
Assert.AreEqual
ব্যবহার করে প্রত্যাশিত এবং প্রাপ্ত মান যাচাই করা হয়।NUnit এ [TestCase]
অ্যাট্রিবিউট ব্যবহার করে বিভিন্ন ইনপুট দিয়ে টেস্ট চালানো যায়।
[TestFixture]
public class CalculatorTests
{
[TestCase(5, 3, 8)]
[TestCase(10, 20, 30)]
[TestCase(-5, -3, -8)]
public void Add_ReturnsCorrectResult(int a, int b, int expected)
{
// Arrange
var calculator = new Calculator();
// Act
int result = calculator.Add(a, b);
// Assert
Assert.AreEqual(expected, result);
}
}
এখানে [TestCase]
ব্যবহার করে একাধিক ইনপুট দিয়ে Add
মেথডের জন্য টেস্ট লেখা হয়েছে।
MSTest এবং NUnit উভয় ফ্রেমওয়ার্কে Assert মেথডের মাধ্যমে টেস্ট ভ্যালিডেশন করা হয়। নিচে কিছু সাধারণ Assert মেথড দেওয়া হলো:
MSTest Assert | NUnit Assert | কাজ |
---|---|---|
Assert.AreEqual(a, b) | Assert.AreEqual(a, b) | দুই মান সমান কিনা যাচাই করা |
Assert.AreNotEqual(a, b) | Assert.AreNotEqual(a, b) | দুই মান সমান নয় কিনা যাচাই করা |
Assert.IsTrue(condition) | Assert.IsTrue(condition) | শর্তটি সত্য কিনা যাচাই করা |
Assert.IsFalse(condition) | Assert.IsFalse(condition) | শর্তটি মিথ্যা কিনা যাচাই করা |
Assert.IsNull(object) | Assert.IsNull(object) | অবজেক্টটি null কিনা যাচাই করা |
Assert.IsNotNull(object) | Assert.IsNotNull(object) | অবজেক্টটি null নয় কিনা যাচাই করা |
Assert.Throws<Exception>(Action) | Assert.Throws<Exception>(Action) | একটি নির্দিষ্ট এক্সেপশন থ্রো হচ্ছে কিনা যাচাই করা |
একটি নির্দিষ্ট এক্সেপশন থ্রো হচ্ছে কিনা যাচাই করার জন্য NUnit এ Assert.Throws<Exception>
ব্যবহার করা হয়।
[Test]
public void Divide_ThrowsDivideByZeroException()
{
// Arrange
var calculator = new Calculator();
// Act & Assert
Assert.Throws<DivideByZeroException>(() => calculator.Divide(10, 0));
}
এই টেস্ট যাচাই করবে যে Divide
মেথডে শূন্য দ্বারা ভাগ করলে DivideByZeroException
থ্রো হচ্ছে কিনা।
বৈশিষ্ট্য | MSTest | NUnit |
---|---|---|
টেস্ট ক্লাস চিহ্নিতকরণ | [TestClass] | [TestFixture] |
টেস্ট মেথড চিহ্নিতকরণ | [TestMethod] | [Test] |
ডেটা ড্রাইভেন টেস্ট | [DataTestMethod], [DataRow] | [TestCase] |
Exception যাচাই | Assert.Throws<Exception>(Action) | Assert.Throws<Exception>(Action) |
MSTest এবং NUnit উভয় ফ্রেমওয়ার্কই C# এ টেস্ট লেখার জন্য শক্তিশালী ও জনপ্রিয়। MSTest Microsoft এর অফিসিয়াল ফ্রেমওয়ার্ক এবং Visual Studio তে বিল্ট-ইন সাপোর্ট করে, আর NUnit অনেক বেশি সম্প্রসারণযোগ্য এবং তৃতীয় পক্ষের প্রোজেক্টে ব্যবহার করা হয়। ইউনিট টেস্টিংয়ের মাধ্যমে কোডের নির্ভুলতা যাচাই করা সহজ হয় এবং বিভিন্ন বাগ বা ত্রুটি শনাক্ত করা সম্ভব হয়।
আরও দেখুন...